package com.atguigu.gmall.product.api;

import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.common.result.ResultCodeEnum;
import com.atguigu.gmall.product.entity.BaseCategory1;
import com.atguigu.gmall.product.service.BaseCategory1Service;
import com.atguigu.gmall.product.vo.CategoryVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.concurrent.TimeUnit;

@RestController
@RequestMapping(value = "/api/inner/product")
@Slf4j
public class BaseCategoryApiController {

    @Autowired
    private BaseCategory1Service baseCategory1Service ;

    /**
     * feign远程调用的时候默认的超时时间是1s，如果请求超时了，那么此时就会触发fegin的重试机制，默认情况下会重试1次。
     * 如果重试也超时了，那么此时就会判断当前系统中有没有提供降级逻辑，如果有走降级逻辑，如果没有抛出异常
     * @return
     */
    @GetMapping(value = "/getAllBaseCategory")
    public Result<List<CategoryVo>> findAllCategory() {
        log.info("BaseCategoryApiController...findAllCategory...方法执行了...");

//        try {
//            TimeUnit.SECONDS.sleep(6);      // 线程休眠2s
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }

        List<CategoryVo> categoryVoList = baseCategory1Service.findAllCategory() ;
        return Result.build(categoryVoList , ResultCodeEnum.SUCCESS) ;
    }

}
